Configurable scheduling system

ABSTRACT

A configurable scheduling method and apparatus for scheduling orders and worker according to a constraint set including a programmable constraint set and a fixed constraint set. The programmable constraint set programmed by a service organization to alter the schedule process from a normal process governed by the fixed constraint set to a reconfigured process also governed by the programmable constraint set.

CROSS-REFERENCE TO RELATED APPLICATION

[0001] This application claims the benefit of U.S. ProvisionalApplications 60/193,834, 60/193,917, 60/193,832, 60/193,705 and60/193,833, each of which were filed Mar. 31, 2000, and each of whichare incorporated herein by reference

TECHNICAL FIELD

[0002] The technical field relates generally to scheduling, and moreparticularly, to a system and method for a configurable schedulingsystem that is configurable by a service organization using the system.

COPYRIGHT NOTICE - PERMISSION

[0003] A portion of the disclosure of this patent document containsmaterials which are subject to copyright protection. The copyright ownerhas no objection to the facsimile reproduction by anyone of the patentdocument or the patent disclosure as it appears in the Patent andTrademark Office patent files or records, but otherwise reserves allcopyright rights whatsoever. The following notice applies to thesoftware and data as described below and in the drawings attachedhereto: Copyright © 2001, MDSI Mobile Data Solutions Inc., All RightsReserved.

BACKGROUND OF THE INVENTION

[0004] In many industries which employ a large mobile workforce, such asutilities, taxi companies, and large equipment repair services, theefficiency with which mobile workers can be scheduled and dispatched tocustomers can have a great impact on customer satisfaction as well as ona service provider's bottom line. From the customer satisfactionstandpoint, it is not uncommon for a customer to call a cable televisioncompany, or other service provider, to request service only to be toldto choose a four-hour service window on good days, or an “all day”service window on bad days. Even when the customer is “lucky” enough torequest service on a “good” day, the worker dispatched by the serviceprovider typically will arrive well after the window has closed, or thecustomer will have waited, and wasted, most of the day for what shouldtypically only be a half-hour service call. This situation arises froman inability of the service provider to accurately predict when aparticular worker will complete a given task and how long it will takefor the worker to reach the next service location.

[0005] From the financial standpoint, inefficient scheduling anddispatching results in fewer service calls being performed each day,potentially resulting in lower earnings per worker-hour, as well aspossible additional expenditures required for hiring and trainingadditional workers. To improve scheduling and dispatching, many serviceproviders have an automated or computerized scheduling system carry outthese tasks. Conventional scheduling systems typically perform thescheduling and dispatching tasks through the use of various algorithmsthat account for many factors in assigning a mobile worker to service acustomers work order, such as time availability, skill sets, geographicarea, duration of each work order, travel time, and the like. Thus,using scheduling systems such as these allow for a service provider tomore efficiently utilize their mobile workers in satisfying customerwork orders.

[0006] Although scheduling systems have reduced the difficulty a serviceprovider faces in scheduling and dispatching mobile workers, the systemsand algorithms employed are generally difficult customize or reconfigureto the needs of a particular service organization. Although someconventional scheduling systems have incorporated some aspects ofconfigurability by the service organization, the extent ofconfigurability is usually limited to customizing the scheduling systemby having the service organization select from a set of predefinedscheduling rules. However, any additional configuration of thescheduling system by the service organization involves customreprogramming of the algorithms themselves, which will require thereprogramming be performed the programmers of the scheduling system.Moreover, in the cases where additional modifications to the schedulingsystem are required by the service organization, additionalreprogramming may be required. As one could imagine, having thealgorithms reprogrammed for a custom configuration of the schedulingsystem can be costly and time consuming. The service organization isalso subject to the time constraints of the programmers reprogrammingthe algorithms. That is, service organizations have no choice but towait until programmers have time to work on their scheduling systems.For the service organization having limited financial resources, orwhere reprogramming of the algorithms cannot be completed within thedesired timeframe, the service organization is left without any optionsbut to suffer through the use of the existing scheduling system.Therefore, there is a need for a configurable scheduling system havinggreater flexibility in allowing a service organization using the systemto configure the system.

SUMMARY OF THE INVENTION

[0007] The present invention relates to a user-configurable schedulingmethod and apparatus configurable by a service organization forscheduling orders and workers in accordance with a constraint setincluding a programmable constraint set and a fixed constraint set. Theprogrammable constraint set alters the schedule process from a normalprocess governed by the fixed constraint set. The constraint setincludes programmable rules and constants. The programmable rules may beprogrammed in accordance with a rule language convention having a firstfield containing rule identifier to uniquely identify the datastructure, and a field containing a rule body including material foraltering the schedule process from a standard process to a reconfiguredprocess configured by the service organization.

BRIEF DESCRIPTION OF THE DRAWINGS

[0008]FIG. 1 is a block diagram of a system showing the relationshipbetween a service organization, a scheduling system, mobile servicerepresentatives, and customers according to and embodiment of thepresent invention.

[0009]FIG. 2 is a block diagram showing the scheduling system accordingto an embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

[0010] In the following detailed description of exemplary embodiments ofthe invention, reference is made to the accompanying drawings, whichform a part hereof, and in which are shown, by way of illustration,specific exemplary embodiments in which the invention may be practiced.These embodiments are described in sufficient detail to enable thoseskilled in the art to practice the invention. Other embodiments may beutilized and structural, logical, electrical, and other changes may bemade without departing from the spirit or scope of the presentinvention. The following detailed description is, therefore, not to betaken in a limiting sense, and the scope of the present invention isdefined only by the appended claims. The present applicationincorporates by reference the following references:

[0011] Simon Jacobs, Enterprise Scheduling System (ESS) FunctionSpecification, Rev. 4.1 (Jun. 30, 2000); and Simon Jacobs, ConfigurableWDS (CWDS), Rev. 2.1 (Aug. 1999).

[0012]FIG. 1 is a block diagram of a system 100 according to one aspectof the present invention. The system 100 includes a service organization102. The service organization 102 performs services for a roster ofcustomers. When a customer 108 is interested in having a serviceperformed by the service organization 102, the customer 108 calls theservice organization 102 to make a reservation for a service to beperformed. Using the scheduling system 104, the service organization 102negotiates with the customer 108 to place a reservation on a schedule.The scheduling system 104 provides to the service organization 102several appointment windows from which the customer 108 may choose. Thecustomer 108 selects an appointment window in which the service will beperformed. During the negotiation, the scheduling system 104 makespreliminary assignment to one or more mobile service representatives106. A mobile service representative 106 is one who is capable ofperforming the service requested by the customer 108. Each time areservation is placed, the scheduling system 104 accounts for manyfactors in assigning the reservation to a mobile service representative106, such as time availability, skill sets, geographic area, duration ofeach job, travel times between jobs, and equipment requirements. Thescheduling system 104 can be implemented over one machine or severalmachines with different processors. This allows the scheduling system104 to be scalable depending on the needs of the service organization102. As will be discussed in more detail below, the scheduling system104 is also configurable by the service organization, thus allowing thescheduling system 104 to meet different constraints and objectives asdefined by the service organization.

[0013]FIG. 2 illustrates a scheduling system 200 according to anembodiment of the present invention. The scheduling system 200 issimilar to the scheduling system 104 shown in FIG. 1 and can besubstituted for the scheduling system 104. The scheduling system 200performs a scheduling process. That is, the scheduling process includesappointment negotiation, assignment and optimization processes. It willbe appreciated that additional processes may be included, as well ashaving one or more of the processes described herein omitted, withoutdeparting from the scope of the present invention. The processes ofappointment negotiation, assignment and optimization have been providedmerely for the purposes of an example. It will be appreciated that“process” is used herein to refer to a logical collection of activities.

[0014] The scheduling system includes a negotiator 204, an assigner 208,and an optimizer 212 which perform negotiating, assigning, andoptimizing functions through the use of a negotiation algorithm 216, anassignment algorithm 220, and an optimization function 224,respectively. Negotiating offers appointment windows to a customer toselect for a reservation and has performed enough processing to knowthat the reservation may be assigned to any of the appointment windowsthat are offered to the customer. Assigning assigns the reservations toa shift of a mobile service representative provided that the shift andthe mobile service representative satisfy certain constraints, such assufficient skill sets to perform the work under the reservation.Optimizing changes the way reservations are assigned by the assigningfunction to meet optimization objectives defined by the serviceorganization. The optimization may move reservations within a shift of amobile service representative. It may swap reservations between twoshifts of two mobile service representatives as well. The optimizationis designed to occur independent from the assignment while newreservations are being assigned.

[0015] It will be appreciated that scheduling system 200 may beimplemented using various computer systems and software techniques thatare well-known to those of ordinary skill in the art. A more detaileddescription of a system in which the scheduling system 200 may beimplemented is provided in co-pending U.S. Pat. application ______,entitled ENTERPRISE SCHEDULING SYSTEM FOR SCHEDULING MOBILE SERVICEREPRESENTATIVES, filed on Apr. 2, 2001, to Jacobs et al., which isincorporated herein by reference.

[0016] In embodiments of the present invention, operation of thenegotiation algorithm 216, the assignment algorithm 220, and theoptimization algorithm 224 of the scheduling system 200 is governed by aconstraint set, which includes a set of rules and a set of constants.The set of constraints can be defined in a file that is then compiledinto a library that are used when the negotiation, assignment, oroptimization algorithms are executed. The set of rules include bothfixed business rules, which are generally inaccessible by a serviceorganization, and configurable rules that can be programmed by theservice organization. Similarly, as will be explained in more detailbelow, the set of constants are programmable and may be used by theservice organization to control the flow of execution of the rules.Their values can be changed at run time by dispatchers and systemadministrators to adjust the rule set based on different operatingconditions. For example, changing the scheduling during a snow store ascompared to a sunny day, or scheduling during a major service outage.

[0017] Although the underlying structure of the negotiation, assignment,and optimization algorithms 216, 220, and 224 are fixed, and generallyinaccessible to the service organization, the rules, and consequentlythe constants, are invoked from within the negotiation, assignment, andoptimization algorithms 216, 220, and 224 by rule identifiers that arecoded into the algorithms. Thus, although the service organizationcannot modify the algorithm itself, through the use of the programmablerules and constants, the service organization is provided with amechanism by which the operation of the negotiation, assignment, andoptimization algorithms 216, 220, and 224 of the scheduling system 200may be customized or configured to the particular needs of the serviceorganization using the scheduling system 200.

[0018] Examples of the types of rules and constants shall now bediscussed to illustrate their use in customizing or configuring thescheduling system 200. It will be appreciated, however, that thefollowing description, although describing particular embodiments, isprovided by way of example, and should not be interpreted in limitingthe scope of the present invention.

[0019] As mentioned previously, the rules of the constraint set includeboth fixed business rules and configurable or programmable rulesprogrammed by the service organization. However, the rules, both thefixed and configurable ones, can also be generally categorized by a typeas well. For example, the rules of the constraint set can be categorizedaccording to the following types.

[0020] Order candidacy rules, which govern which orders can beconsidered by the appointment, negotiation, assignment, and optimizationalgorithms;

[0021] Mobile user candidacy rules, which govern which mobile users canbe considered by the appointment, negotiation, assignment, andoptimization algorithms;

[0022] Assignment candidacy rules, which determine which order and userpairs constitute valid assignments;

[0023] Score rules, which provide a measure of the quality of theassignment or an order to a mobile user, and is used in assignment andoptimization as well; and

[0024] Intermediate rules refer to those rules that are referenced byother rules. The intermediate rules are used to build up complex highlevel rules.

[0025] The three candidacy rules, namely, the order, mobile user, andassignment candidacy rules return a value of true or fail. The scorerules return a numerical value, typically between zero and one. Therecan be a variety of score rules. For example, there are a number ofinstances of each type of candidacy rule, where all instances of eachtype must be true for the order or user to be considered a candidate. Itwill be appreciated that the various rules previously described can beused or accessed by one or all of the algorithms executing in thescheduling system, including the negotiation, assignment andoptimization algorithms. As will be explained in more detail below,certain types of business rule values are available to correspondingtypes of rules.

[0026] As mentioned previously, the grammar for the rule language isdesigned to provide enough flexibility to express the various businessrules that need to be defined for the scheduling system. A programmablerule is written by a service organization according to a languageconvention, which is subsequently translated into a rule grammar format.The same language convention could be used for the fixed business rulesand constraint sets as well, except that the fixed business rules areinaccessible by the service organization. A suggested languageconvention is as follows.

[0027] A programmable rule is identified by a <rule_id> which is a labelstarting with the symbol “R:”. The <rule_id> must be unique within therule context group. The rule is composed of a rule body or rule clausecomposed of different rule types or more rule identifiers. The ruleclause is bounded by a pair of brackets ({}), and each of the ruleidentifiers therein are separated by a semicolon (;). The rule is thenterminated by a period (.).

[0028] In addition to defining the rule language convention, data typesare defined as well. The following list provides examples of those datatypes that can be defined within the language.

[0029] Rule label. This label identifies a rule for future reference.Rule labels begin with R:.

[0030] Variable label. This type of label is enclosed in [squarebrackets] and denotes a value that is returned by the system that therule may access. The value is returned by a function and may be a singlefield in a database or the result of combining information from avariety of sources (e.g. a synthesis of different database fields). Themotivation for providing this label mechanism is to furnish the serviceorganization with the ability to reference values that are logicallyrelated to one another (e.g., the wage paid to a given mobile user). Avariable label may be composed of one or more elements, each separatedby a period (.). Each of the elements denotes a sub-field of those toits left; for example, [order.date] denotes the date belonging to theorder object, and [order.assignedUser.state] denotes the state of themobile user assigned to the order.

[0031] Variables may, as will be discussed in more detail below,represent literals, numbers, dates and strings. If the variable label ispreceded by a dollar sign ($) the label is taken to be a database fieldname and not an accessor function. This is done in order to allow forthe possibility that a service organization creates a customizeddatabase field or configurable fields that can be used by the rules andconstants. For example, some configurable fields include customercontact number, completion codes (showing work done and parts ormaterials used to complete and order), customer account number, previouswork history, and the like.

[0032] Dates. Dates are bounded by a pair of percentage signs (%%) andare specified in the following format:

[0033] yyyy/mm/dd (numeric year, month, and day)

[0034] Times. Times are bounded by a pair of ampersand signs (&&) andare specified in the following format:

[0035] hh:mm:ss (hours, minutes, and seconds)

[0036] Datetimes. Datetimes are bounded by a pair of “at” signs (@@) andare specified in the following format:

[0037] yyyy/mm/dd-hh:mm:ss

[0038] Numbers. These may be signed or unsigned, integers or realnumbers base ten. Real numbers are specified in floating point formatonly.

[0039] Strings. These are delimited by a pair of double quotes (“”) andmay contain alphanumeric or special characters.

[0040] Literals may be any of the date, number or string types. Aliteral label represents a label that has been equated to a literal.Literal labels are delimited by a pair of colons (::). Some specialliterals are defined for the rule language:

[0041] Boolean values are treated as literals e.g., :true: and :false:.An undefined or non-existent value is :nil:

[0042] Sets are supported in so far as there are operators to performmembership comparisons on sets. There is no defined mechanism fordefining a set literal (via a literal label).

[0043] Based on the rule semantics and data types previously defined, anexample programmable rule is provided:

[0044] R:o11 {[order.state] eq :pending:} is a Boolean rule where“R:o11” is the rule label and “[order.state] eq pending:” is the ruleclause. Within the rule clause, “order.state” is a variable label whichprovides the current state of the order, and “:pending:” is a literallabel. Essentially, the rule R:o11 will return a “true” value for allthe orders that are currently pending. As will be shown in variousexamples below, simple rules such as R:o11 can be combined with otherrules to configure the operation of the negotiation, assignment, andoptimization algorithms.

[0045] The rules written according to the rule language conventionpreviously described are subsequently translated into a rule grammar.The following list provides an example rule grammar as expressed using aBNF notation. That is, the expression to the left of the “::=” symbolare expanded to the expression provided to the right. Additionally,optional selection of a terminal or non-terminal symbol is indicatedwith an OR symbol “¦”, where terminal symbols are in bold andnon-terninal symbols are enclosed in angle brackets “<>”. Ruledefinition: <rule> <rule_id> <rule body> <rule_id> R: <id_label> <space><rule body> <allof_rule> <anyof_rule> | <oneot rule> | <cond_rule> |<expr_rule> | <exec_rule> <allof_rule> all-of <blnk> {<blnk><allof_body> <blnk> } <allof body> <rule id> | <rule_id> ; <allof_body><anyof_rule> any-of <blnk> {<blnk> <anyof body> <blnk> } <anyof body><rule ad> | <rule_id> ; <anyof_body> <oneof_rule> one-of <blnk> {<blnk><oneof_body> <blnk> } <oneof body> <rule id> | <rule_id> ; <oneof_body><exec_rule> exec-fn <blnk> {<id_label> } <expr rule> {<blnk> <exp body><blnk> } <exp body> <rule_id> | <rule_id> ; <exp_body> <cond_rule> if<blnk> {<blnk> <cond_clause> <blnk> }<blnk> then <blnk> {<blnk><expr_clause> <blnk> }<blnk> else <blnk> {<blnk> <expr_clause> <blnk> )<cond_clause> <clause body> | <rule Id> <expr _clause> <expr> |<rule_Id> Rule clause definition: <rule_clause> <rule id> {<rcl body> }.<rcl_body> <blnk> <rcl_item> <blnk> <rcl_item> <clause_body> |<rule_body> | <rule_id> <clause_body> <value> <logop> <value> | <setval><setop> <setval> Expression definition: <expr> <numexp> | <date_exp><num_exp> <numval> | (<blnk> <num_exp> <numop> <numexp> <blnk> )<date_exp> <dateval> | (<blnk> <dateval> <dateop> <numval> <blnk>)<numval> <number> | <literal> | <variable> <dateval> <date> <literal><variable> <value> <blnk> <val_type> <blnk> <setval> <<set body> ><set_body> <set_element> <set_element> <blnk> <set body> <set_element><number> | <date> <literal> <val type> <number> <string> | <date><literal> <variable> <rule_id> <literal> <id_label> <variable> [<var_label> ] | [ <var_label_1> ] <var_label_1> $<var_label> <var_label><id_label> | <var_label> <var_label> <id_label> <alpha> <alphanum><alphanum> <alpha> | <numeric> <string> “<string_body>” <string_body><ans> <string_body> <ans> <number> <sign> <real> <space> <sign><integer> <space> <date> % <date_defn> % <date_defn> <yyyy> / <man_man>/ <dd> <time> & <time_detn> & <time_defn> <hh> / <min_min> / <ss><datetime> @ <date_defn> - <time_defn> @ <real> <integer> <floatpart><floatpart> <null> | <integer> <integer> <numeric> | <integer> <numeric><ans> <alpha> | <number> | <special> <sign> <null> | + | − <dd><integer> Range: 01-31 <mon man> <integer> Range: 01-12 <yyyy> <integer>Range: 0-9999 <hh> <integer> Range: 0-23 <mm mm> <integer> Range: 0-59<55> <integer> Range: 0-59 <lagap> eq | neq | lt | leq | gt | geq |<setop> seq | mem | nmem | in | notin <numop> + | − | * | / | **<dateop> + | − <alpha> a | b | c | d | e | f | g | h | i | j | k | l | m| n | o | p | q | r | s | t | u | v | w | x | y | z | A | B | C | D | E| F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W| X | Y | Z <numeric> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 <special> !| @ | # | $ | % | ^ | & | * | / | + | _ | <space> <blnk> <spaces> |<null> <spaces> <space> | <spaces> <space> <space> UNICODE spacecharacter <null> No token required

[0046] The operators used in the above grammar are defined as follows.

[0047] all-of

[0048] This operator applies to all clauses identified in the rule body.A logical AND operation is performed on the clauses, thus:

[0049] R:xyz all-of {R:o1; R:o2; R:o3 }. is equivalent to:

[0050] R:o1 AND R:o2 AND R:o3

[0051] The value returned by this operator is a Boolean (true or false).

[0052] any-of

[0053] This operator applies to all clauses identified in the rule body.A logical OR operation is performed on the clauses, thus:

[0054] R:xyz any-of {R:o1; R:o2; R:o3 }. is equivalent to:

[0055] R:o1 OR R:o2 OR R:o3

[0056] The value returned by this operator is a Boolean (true or false).

[0057] one-of

[0058] This operator applies to all clauses identified in the rule body.A logical exclusive OR (XOR) operation is performed on the clauses,thus:

[0059] R:xyz one-of {R:o1; R:o2; R:o3 }. is equivalent to:

[0060] R:o1 XOR R:o2 XOR R:o3

[0061] The value returned by this operator is a Boolean (true or false).

[0062] Expression rule

[0063] An expression rule may consist of an expression that can eitherbe a numeric, date or string expression or may consist of a number ofrule identifiers. The result of the execution of the rule is the valueof the expression or, in the case of a number of rules, the valuereturned by the last rule executed. An “if” statement without an “else”clause is only considered to execute if the condition is true. Thus, therule:

[0064] R:xyz {R:o1; R:o2; R:o3 }.

[0065] executes each of the rules and returns the value of the last rulethat executed. Thus, if no conditional clauses are evaluated the resultof executing rule R:xyz will be the result returned by rule R:o3. Theexpression rule provides a flexible mechanism for performing a number ofconditional clauses where the rule is expected to yield a valuecorresponding to the conditional clause that succeeded.

[0066] exec-fn

[0067] This operator applies to a single named function in the rulebody. The result returned by the rule is that returned by the namedfunction. This operator is provided so that complex expressions may beinvoked as a single rule clause without requiring the serviceorganization to program the expression.

[0068] Conditional clause

[0069] Conditional expressions only have a consequent and “else”clause.The former is evaluated if the logical expression of the conditionalevaluates to true otherwise the “else” expression is evaluated. Thesyntax used is the following:

[0070] If clause then expression else expression. The clause may be asimple Boolean clause or may be a rule identifier. The expression may benumeric (returning an integer or real value), a date expression(returning a date) or a rule identifier.

[0071] Logical Operators (A op B)

[0072] Logical operators must be provided with operands of the sametype. In the event that one or both operands are undefined (:nil:) theresult of the operation will be :false:

[0073] In the following expressions, if A and B evaluate to numeric ordate values the comparison is done based on the arithmetic relationshipbetween the operands. If A and B evaluate to strings the comparison isdone according to the UNICODE collating sequence. eq Returns true if A =B neq Returns true if A ≠ B leq Returns true if A ≦ B geq Returns trueif A ≧ B lt Returns true if A < B gt Returns true if A > B

[0074] Set Operators (A op B)

[0075] In the following expressions, A and B must represent sets ofsimilar objects. mem Returns true if A ∩ B ≠ Ø nmem Returns true if A ∩B =Ø seq Returns true if A = B in Returns true if A ∈ B notin Returnstrue if A ∉ B

[0076] The following tables describe valid label sets that can be usedin the grammar for the rule language, given the type of rule beingcreated. The tables presented below list the variable labels that theservice organization is allowed to reference and the values that thevariables referenced may take.

[0077] Order Candidacy and Assignment Candidacy. The following tableprovides some examples of the types of business rule values that may beused in expressions for order candidacy and assignment candidacy:<var_label> Type Value order.state Literal en-route|pending|on-site|dispatched| complete|cancelled| suspended order.isAssigned Literaltrue|false order.scheduleDate Date date|nil order.isAutoDispatchableLiteral true|false order.priorityType Literal normal|emergencyorder.context Literal current|future|undated order.assignedUser LabelMobile User identifier order.area Variable The area for the orderorder.amountCollected Number Amount collected

[0078] Mobile User Candidacy and Assignment Candidacy. The followingtable enumerates the business rule values that may be used inexpressions for mobile user candidacy and assignment candidacy:<var_label> Type Value user.isAutoDispatchable Literal true|falseuser.state Literal available|unavailable| en-route|on-site| emergencyuser.isInEmergencycontrol Literal true|false user.area Variable Themobile user's assigned area user.wage Number mobile user wage

[0079] Assignment Candidacy. The following table enumerates the valuesthat may be used in expressions for assignment candidacy: <var_label>Type Value user_order.travelTime number mobile user travel time

[0080] Area Data. The following table enumerates some of the values thatmay be used in expressions involving areas: <var_label> Type Valuearea.travelMin number Minimum area travel time area.travelMax numberMaximum area travel time

[0081] System Data. The following table enumerates some of the systemvalues that may be used in expressions for mobile user or ordercandidacy: <var_label> Type Value SystemDate date Date SystemMinUserwagenumber Minimum mobile user wage SystemMaxUserwage number Maximum mobileuser wage SystemAmountCollectedMin number Minimum amount collectedSystemAmountCollectedMax number Maximum amount collectedSystemSchedulingActivity literal scheduled|redistribution| Typein-day|floater|suggest| forecast|auto-distribute

[0082] Constants, as briefly discussed above, allow a serviceorganization to control the flow of execution within the rules.Constants are a mechanism for replacing global constants that wouldotherwise require explicit reference in the programmable business rules.This feature is illustrated by the following example.

[0083] Let there be a Boolean constant X that the service organizationsets to establish some configuration. Additionally, the serviceorganization has included a programmable rule that should be invoked ifthe value of X is true. Through the use of constants, the rule could beformulated in the form:

[0084] Rule R1: If (X=true) and (Y or Z) then expression.

[0085] This rule could be recast in the following form, using aconstant:

[0086] Constant C1: true.

[0087] Rule R2: If (C1) and (Y or Z) then expression.

[0088] Thus, this mechanism allows the service organization to changethe behavior of rules by manipulating secondary level rules (thoseinvoked explicitly by other rules) rather than referencing a globalvalue explicitly.

[0089] The following are some examples illustrating the use of theprogrammable rules and constants that may be created by the serviceorganization using the rule language convention previously described. Itwill be appreciated that the following examples have been provided toillustrate various aspects of the present invention, and are notintended to limit its scope.

[0090] Constants

[0091] Emergency Order Dispatching

[0092] This constant allows for emergency order dispatching. It ischecked in the order candidacy rule.

[0093] R:EmergencyOrderDispatching {{:true:}}

[0094] If we wish to turn off emergency order dispatching the constantwould read thus:

[0095] R:EmergencyOrderDispatching {{:false:}}

[0096] Rules

[0097] Order Candidacy Rules

[0098] This example uses the constant rule R:EmergencyOrderDispatchingpreviously defined. The order candidacy rule (R:OrderCandidacy)describes the conditions under which an order can be automaticallyassigned by the scheduling system to a mobile user. For example, for anorder to be assignable, the order state must be pending (R:o11) ordispatched (R:o12), the order must be enabled for automatic assignment(R:o6), as well as a number of other conditions. The order candidacyrule also makes use of a constant. For example, there is a constant thatindicates whether an emergency order can be automatically dispatched(R:EmergencyOrderDispatching). If the value of this constant is false,that is, emergency orders cannot be automatically dispatched, and theorder is an emergency order, then it cannot be automatically assigned.However, if the value of this constant is true, then the order can bedispatched even it is an emergency order. R:OrderCandidacy all-of{R:ol;R:o3; R:o4; R:o6; R:o7; R:o9 }. R:ol {any-of {R:oll;R:o12}}. R:o11{[order.state] eq :pending:}. R:o12 {[order.state] eq :dispatched:}.R:o3 {[order.isAssigned]eq :false:}. R:o4 {[order.scheduleDate]le[systemDate]}. R:o6 {[order.isAutoDispatchable] eq :true:}. R:o7 {any-of{R:o71; R:o72}}. R:o71 {[order.priorityType] neq :emergency:}. R:o72{all-of {R:o721; R:EmergencyOrderDispatching}}. R:o721{[order.priorityType] eq :emergency:}. R:o9 {R:Usercandidacy}.

[0099] Mobile User Candidacy Rules

[0100] The mobile user candidacy rule (R:UserCandidacy) describes theconditions under which a mobile user can be automatically assignedorders. For example, to be assigned orders, a mobile user must beenabled for automatic assignment (R.f100) and must not be in anemergency state (R:f100), as well as a number of other conditions.R:UserCandidacy all-of {R:f100; R:f101; R:f102; R:f105 }. R:f100{[order.assignedUser.isAutoDispatchable] eq :true:}. Rf101{[order.assignedUser.state] neq :emergency: }. Rf102{[order.assignedUser.isInEmergencyControl] neq :true:}. Rf105{any-of{R:f1051; R:f1052}}. R:f1051 {[order.assignedUser.mode] neq:local:}. R:f1052 {all-of {R:f10521; R:UserlocalModeDispatch }}.R:f10521 {[order.assignedUser.mode] eq :local:}.

[0101] Amount Collected Rule

[0102] The amount collected rule provides a score, between 0 and 1, thatindicates the relative value of (that is, the revenue generated by)working on an order. Higher values represent more revenue collected.Note that rule R:ac10 is used in many places in the following example.Thus, the R:ac10 rule provides a good example of the use of anintermediate rule. R:AmountCollectedScore {R:ac1; R:ac2; R:ac3 }. R:ac1{if {R:ac10 leq 0} then { 0 }}. R:ac2 {if {R:ac20 }} then { R:10 }}.R:ac20 all-of { R:ac21; R:ac22 }. R:ac21 { R:ac10 gt 0 }. R:ac22 {R:ac10 lt 1 }. R:ac3 {if{R:ac10 geq 1} then { 1 }}. R:ac10 {if{[systemAmountCollectedMax] eq [systemAmount CollectedMin]} then { 1}else {R:ac101}}. R:ac101 {( 1 − (([order.amountCollected] −[systemAmount CollectedMin]) / ([systemAmountCollectedMax] −[systemAmount CollectedMin]))}.

[0103] Mobile User Wage Rule

[0104] The mobile user wage rule provides a score, between 0 and 1, thatindicates the whether the mobile user is expensive to assign to orders.Lower values represent more expensive mobile users. R:WageScore { R:w1;R:w2; R:w3 }. R:w1 {if {R:w10 leq 0} then { 0 }}. R:w2 {if {R:w20 }}then { R:10 }}. R:w20 all-of { R:w21; R:w22 }. R:w21 { R:w10gt 0}. R:w22{R:w10 lt 1 }. R:w3 {if {R:w10 geq 1}then { 1 }}. R:w10 {if{[systemMaxUserWage] eq [systemMinUserWage]} then { 1 }else {R:w101}}.R:w101 {(1 − (([user.wage] − [[systemMinUserWage])/ ([systemMaxUserWage]− [systemMinUserWage])))}.

[0105] It will be appreciated that certain details have been set forthherein to provide a sufficient understanding of the invention. However,it will be clear to one skilled in the art that the invention may bepracticed without these particular details. In other instances,well-known circuits, control signals, timing protocols, and softwareoperations have not been shown in detail in order to avoid unnecessarilyobscuring the invention. Additionally, computer and/or softwareimplementation of embodiments of the present invention are well-known tothose of ordinary skill in the art. It will be further appreciated that,although specific embodiments of the invention have been describedherein for purposes of illustration, various modifications may be madewithout deviating from the spirit and scope of the invention.Accordingly, the invention is not limited except as by the appendedclaims.

1. A method for configuring a schedule process, comprising: schedulingan order into a shift of a worker according to a set of rules; andconfiguring the set of rules to change the act of scheduling.
 2. Themethod of claim 1 wherein configuring comprises programming a rule tocontrol which orders are considered in the schedule process.
 3. Themethod of claim 1 wherein configuring comprises programming a rule tocontrol which workers are considered in the schedule process.
 4. Themethod of claim 1 wherein configuring comprises programming a rule tocontrol whether an order can be assigned to a worker.
 5. The method ofclaim 1 wherein configuring comprises programming a rule to provide ascore when comparing a workers to an order.
 6. The method of claim 1,further comprising programming a set of constants to control the flow ofexecution within the rules, the constants replacing global constantsthat would otherwise require explicit reference in the configured set ofrules.
 7. The method of claim 1 wherein scheduling comprises negotiatinga reservation, assigning the reservation, and optimizing thereservation.
 8. A method for configuring a schedule process, comprising:scheduling an order into a shift of a worker according to a set ofrules; and programming a constraint set to change the act of scheduling.9. The method of claim 8, wherein programming a constraint set includesprogramming a set of rules, each rule programmed in accordance with arule language convention having: a first field containing ruleidentifier to uniquely identify the data structure; and a fieldcontaining a rule body including material for altering the scheduleprocess from a standard process to a reconfigured process.
 10. Themethod of claim 8 wherein scheduling comprises negotiating areservation, assigning the reservation, and optimizing the reservation.11. A method for performing a schedule process, comprising: programminga programmed constraint set to supplement or change a fixed constraintset; and executing a scheduling process that performs a process ofscheduling orders to a worker in accordance with the programmedconstraint set and the fixed constraint set.
 12. The method of claim 11wherein the programmed constraint set comprises programmable rules andconstants.
 13. The method of claim 12, further comprising translatingthe first set of rules from a defined configurable rule languageconvention into a predefined grammar.
 14. The method of claim 13 whereintranslating the first set of rules comprises compiling the first set ofrules into a library that is used when the schedule process isperformed.
 15. The method of claim 12 wherein executing the schedulingprocess comprises performing the scheduling process according to astandard process except where the programmed first set of rules havealtered performance of the scheduling process to a reconfigured process.16. A scheduling system for a scheduling environment, comprising: anegotiator to negotiate the reservation of orders; and an assigner toassign the orders to workers, the negotiator and assigner respectivelynegotiating and assigning the orders according to a constraint setincluding a fixed set of business rules and a set of programmableconfiguration rules.
 17. The scheduling system of claim 16, furthercomprising an optimizer to optimize the reservation of orders.
 18. Thescheduling system of claim 16 wherein the negotiator and assigner areimplemented in a computer system having a processor and a memory coupledthereto.
 19. The scheduling system of claim 16 wherein the set ofconfiguration rules programmed according to a rule language conventiondefining a first data field containing data to uniquely identify arespective configuration rule and a second data field containing datarepresenting a rule clause for altering a scheduling process from astandard process to a reconfigured process.
 20. A scheduling system,comprising: a memory for storing a set of rules having a set of fixedbusiness rules and a set of configurable rules programmed by a serviceorganization; and a processor coupled to the memory for executing ascheduling process that performs a schedule process of scheduling ordersand workers in accordance with the set of rules as altered by the set ofconfigurable rules.
 21. The scheduling system of claim 20 whereinexecution of the scheduling process by the processor includes invokingthe set of rules from defined locations in a negotiation algorithm. 22.The scheduling system of claim 20 wherein the processor further executesan assignment algorithm in accordance with the set of rules as alteredby the set of configurable rules to assign orders to a worker.
 23. Thescheduling system of claim 20 wherein the processor further executes anoptimization algorithm in accordance with the set of rules as altered bythe set of configurable rules to assign orders to a worker.
 24. Thescheduling system of claim 20 wherein the processor further executesnegotiation, assignment, and optimization algorithms in accordance withthe set of rules as altered by the set of configurable rules to scheduleorders to a worker.
 25. The scheduling system of claim 20 wherein theset of configurable rules programmed by the service organization arecompiled from a defined rule language convention into libraries andstored in the memory according to a defined rule grammar format.
 26. Ascheduling system, comprising: a first algorithm for negotiating thereservation of work orders; a second algorithm for assigning work ordersto workers; a set of rules that are invoked from defined locations inthe first and second algorithms to govern execution of the algorithms,the set of rules including a fixed set of business rules augmented by aset of programmable rules for altering execution of the algorithms fromthe execution according to only the fixed set of business rules.
 27. Thescheduling system of claim 26 wherein the first and second algorithmsare implemented in a processor and the set of rules are stored in amemory coupled to the processor.
 28. A computer-readable medium havingstored thereon a data structure, comprising: a first data fieldcontaining data to uniquely identify the data structure; and a seconddata field containing data representing a rule body including data foraltering a scheduling process from a standard process to a reconfiguredprocess.
 29. The computer-readable medium of claim 28 wherein thescheduling process comprises negotiating a reservation, assigning thereservation, and optimizing the reservation.
 30. The computer-readablemedium of claim 28 wherein the second data field includes a variablelabel denoting a value that is returned when the data structure isaccessed.
 31. The computer-readable medium of claim 30 wherein thesecond data field includes bracket delimiters to identify the variablelabel.
 32. The computer-readable medium of claim 28 wherein the seconddata field includes an operator and a rule body, the rule body boundedby a pair of braces and the operator operating on the rule body.
 33. Thecomputer-readable medium of claim 32 wherein the operation comprises aBoolean operator.
 34. The computer-readable medium of claim 32 whereinthe operation comprises a set operator.
 35. A computer-readable mediumhaving instructions stored thereon for causing a computer to perform amethod for performing a schedule process, comprising: scheduling anorder into a shift of a worker according to a set of rules; andconfiguring the set of rules to change the act of scheduling.
 36. Themethod of claim 35 wherein configuring comprises programming a rule tocontrol which orders are considered in the schedule process.
 37. Themethod of claim 35 wherein configuring comprises programming a rule tocontrol which workers are considered in the schedule process.
 38. Themethod of claim 35 wherein configuring comprises programming a rule tocontrol whether an order can be assigned to a worker.
 39. The method ofclaim 35 wherein configuring comprises programming a rule to provide ascore when comparing a workers to an order.
 40. The method of claim 35,further comprising programming a set of constants to control the flow ofexecution within the rules, the constants replacing global constantsthat would otherwise require explicit reference in the configured set ofrules.
 41. The method of claim 35 wherein scheduling an order comprisesnegotiating a reservation, assigning the reservation, and optimizing thereservation.
 42. A computer-readable medium having instructions storedthereon for causing a computer to perform a method for performing aschedule process, comprising executing a scheduling process thatperforms the schedule process of scheduling orders to a worker inaccordance with a programmed constraint set and the fixed constraintset, the programmed constraint set programmed by a service organizationand augmenting the fixed constraint set to alter performance of theschedule process to a desired configuration.